
import { FObject } from "../../../[框架]/Core/模型/FObject";
import TaskVO from "./TaskVO";


// 游戏配置类，包含游戏的基本信息和广告任务配置
export default class TaskConfig extends FObject implements ITaskConfig {

    // 任务配置的唯一标识符
    _id: string = "67a32cb1a674f48993267c67";
    // 游戏名称
    game_name: string = "快手_玩转水果";
    // 游戏的AppID
    game_appid: string = "ks665406848553849654";
    // 游戏的App Secret
    game_app_secret: string = "default_secret";
    // 签到模式，1:正常签到, 2:跳转签到
    // sign_mode: number = 1; // 没用到


    // 激励强弹的时候提示语
    force_click_text: string = "福利准备中..."
    //强弹的模式 ，1：先弹激励视频，2，先弹插屏
    force_click_mode: number = 1;
    // 如果是先弹出插屏后弹出激励视频的时候，延迟多久弹出激励视频
    force_click_mode2_delay: number = 1;
    // 每天强弹激励广告的次数
    force_click_day_count: number = 1;

    // roi渠道是否展示格子广告，0:否, 1:是
    roi_is_show_gezi: number = 0;
    // roi渠道是否进入小游戏强制展示激励广告
    roi_is_force_show_reward: number = 0;
    // roi渠道进入小游戏强制展示激励广告的几率
    roi_is_force_show_reward_percent: number = 1;
    // roi渠道是否开启误点原生
    roi_is_wudian_ys: number = 0;
    // 原生广告的刷新秒数
    roi_ysad_fresh_time: number = 0;

    // 是否展示格子广告，0:否, 1:是
    is_show_gezi: number = 0;
    // 是否进入小游戏强制展示激励广告
    is_force_show_reward: number = 0;
    // 原生广告的刷新秒数
    ysad_fresh_time: number = 0;
    // 首页几秒以后开始播放插屏
    insetad_play_time: number = 3;
    // 是否开启误点原生
    is_wudian_ys: number = 0;
    // 开启误点原生广告的时候，原生展示时长
    wudian_ys_showTime = 0;
    // 开启误点原生广告的时候，隐藏时长
    wudian_ys_hideTime = 0;
    // 进入小游戏强制展示激励广告的几率
    is_force_show_reward_percent: number = 1;


    // 是否强制点击广告，0:否, 1:是
    is_force_click: number = 0;
    // 强制点击广告的次数
    force_click_count: number = 2;
    // 强制点击广告的时间（秒）
    force_click_time: string = "10";
    // 强制点击广告的百分比
    force_click_percent: string = "0";
    // 强制点击广告的提示信息
    force_click_tips: string = "此次广告播放完毕以后需点击进入广告体验10秒以后，然后退出即可完成任务";
    // 正常提示信息
    normal_tips: string = "亲，需要您耐心观看一段视频完成签到以后才可以获得体力呢";
    // 未播放完广告的提示信息
    not_playover_tips: string = "亲，视频需要完整的播放以后才能获取到奖励呢";
    // 未点击广告的提示信息
    not_clickad_tips: string = "此次广告播放完毕以后需点击进入广告体验10秒以后，然后退出即可完成任务";
    // 广告播放错误的提示信息
    ad_play_error_tips: string = "当前没有合适您的视频观看，请稍后再试";
    // 视频播放时间（秒）
    video_play_time: string = "20";
    // 总播放时间（秒）
    all_play_time: string = "60";
    // 倒计时（秒）
    countdown: string = "0";
    // 间隔时间（秒），逻辑写错，但已经被使用
    interval_time: string = "0";
    // 签到需要观看广告的次数
    // sign_need_look_times: number = 6; // 没用到
    // 激励广告位配置
    reward_adunits: { _index: string; ad_unit: string; }[] = [];
    // 任务奖励配置
    reward_task: TaskVO[] = [];
    // 横幅广告位
    banner_adunits: string = null;
    // 插屏广告位
    inset_adunits: string = null;
    // 格子广告位
    gezi_adunits: string = null;
    // 添加时间（时间戳）
    _add_time: number = 1738747057893;
    // 添加时间（字符串格式）
    _add_time_str: string = "2025-02-05 17:17:37";

    common_reward_id?: string = null;//游戏 原有的广告 使用这个广告位
    //游戏原本的通用的广告位
    public get m_CommmonRewardID(): string {
        let id = this.common_reward_id || this.reward_adunits?.[0]?.ad_unit;
        return id;
    }


    public update(data: object): this {
        super.update(data);
        this.reward_task = this.reward_task || [];
        this.reward_task = this.reward_task.map((item) => {
            let vo = new TaskVO();
            vo.update(item);
            return vo;
        });
        return this;
    }

    /**
     * 打印任务配置信息
     */
    public print(): void {
        Guyu.Log.debug('========== 任务配置信息 ==========');
        Guyu.Log.debug(`游戏名称:game_name=${this.game_name}`);
        Guyu.Log.debug(`游戏AppID:game_appid=${this.game_appid}`);
        Guyu.Log.debug(`游戏App Secret:game_app_secret=${this.game_app_secret}`);
        // Guyu.Log.debug(`签到模式:sign_mode= ${this.sign_mode === 1 ? '正常签到' : '跳转签到'}`);
        Guyu.Log.debug(`是否强制点击广告:is_force_click=${this.is_force_click === 1 ? '是' : '否'}`);
        if (this.is_force_click === 1) {
            Guyu.Log.debug(`强制点击次数:force_click_count=${this.force_click_count}`);
            Guyu.Log.debug(`强制点击时间:force_click_time=${this.force_click_time}秒`);
            Guyu.Log.debug(`强制点击几率:force_click_percent=${this.force_click_percent}`);
            Guyu.Log.debug(`强制点击提示信息:force_click_tips=${this.force_click_tips}`);
        }
        // Guyu.Log.debug(`签到需要观看广告次数:sign_need_look_times=${this.sign_need_look_times}`);
        Guyu.Log.debug(`视频播放时间:video_play_time=${this.video_play_time}秒`);
        Guyu.Log.debug(`总播放时间:all_play_time= ${this.all_play_time}秒`);
        Guyu.Log.debug(`激励广告位数量:reward_adunits.length=${this.reward_adunits.length}`);
        this.reward_adunits.forEach((unit, index) => {
            Guyu.Log.debug(`广告位${index + 1}:reward_adunits[${index}].ad_unit=${unit.ad_unit} (${unit._index})`);
        });
        Guyu.Log.debug(`任务奖励配置数量:reward_task.length=${this.reward_task.length}`);
        Guyu.Log.debug(`未播放完广告提示信息:not_playover_tips=${this.not_playover_tips}`);
        Guyu.Log.debug(`未点击广告提示信息:not_clickad_tips=${this.not_clickad_tips}`);
        Guyu.Log.debug(`广告播放错误提示信息:ad_play_error_tips=${this.ad_play_error_tips}`);
        Guyu.Log.debug(`倒计时:countdown=${this.countdown}秒`);
        Guyu.Log.debug(`间隔时间:interval_time=${this.interval_time}秒`);
        Guyu.Log.debug(`横幅广告位:banner_adunits=${this.banner_adunits}`);
        Guyu.Log.debug(`插屏广告位:inset_adunits=${this.inset_adunits}`);
        Guyu.Log.debug(`添加时间戳:_add_time=${this._add_time}`);
        Guyu.Log.debug(`添加时间字符串:_add_time_str=${this._add_time_str}`);
        Guyu.Log.debug('================================');
    }

}


export interface ITaskConfig {
    _id: string;
    game_name: string;
    game_appid: string;
    game_app_secret: string;
    // sign_mode: number; // 1:正常签到, 2:跳转签到
    is_force_click: number; // 0:否, 1:是
    force_click_count: number;
    force_click_time: string;
    force_click_percent: string;
    force_click_tips: string;
    normal_tips: string;
    not_playover_tips: string;
    not_clickad_tips: string;
    ad_play_error_tips: string;
    video_play_time: string;
    all_play_time: string;
    countdown: string;
    interval_time: string; // 间隔时间逻辑写错，但已经被使用
    // sign_need_look_times: number; // 没用到
    reward_adunits: Array<{ _index: string; ad_unit: string }>;
    reward_task: Array<{ _index: string; ad_task_count: number; ad_task_name: string }>;
    banner_adunits: string;
    inset_adunits: string;
    _add_time: number;
    _add_time_str: string;
}